### Endpoint sequence requirements

A type `X` meets the `EndpointSequence` requirements if it satisfies the requirements of `Destructible` (C++Std [destructible]) and `CopyConstructible` (C++Std [copyconstructible]), as well as the additional requirements listed below.

In the table below, `x` denotes a (possibly const) value of type `X`.

Table 17. EndpointSequence requirements

expression | return type | assertion/note pre/post-condition
--- | --- | ---
`x.begin()` `x.end()` | A type meeting the requirements for forward iterators (C++Std [forward.iterators]) whose value type is convertible to a type satisfying the `Endpoint` requirements. | [`x.begin()`,`x.end()`) is a valid range.